package com.tsk.example.api.convert;

import com.tsk.example.api.model.DemoTableParamsVO;
import com.tsk.example.application.model.DemoTableDTO;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author: 黄嘉振
 * @create: 2023/3/10 13:46
 * @description:    参数转换器，这里对各自业务模型的传递参数进行转换，命名要符合业务场景
 *                  由于demo较简单，没有特殊含义的业务场景，故这里命名以demo命令
 **/
public class DemoConverter {

    public static DemoTableDTO toDemoTableDTO(DemoTableParamsVO vo) {
        /**
         * controller层的接收对象与服务层用的对象在复杂的业务场景下，会存在不同，在此进行对象转换的逻辑处理
         * 一般较简单的场景 VO、 DTO 的内容会高度类似，这种场景在开发时可以酌情考虑合并使用同一个类
         * 复杂业务场景时则不建议如此做
         * 此处的field1模拟级联请求，list格式
         *             即将请求过来的[[field1, value1],[field2, value2],[field3, value3]]
         *             转换为需要的格式
         *             [field1-value1, field2-value2, field3-value3]
         */
        List<List<String>> field1s = vo.getField1s();
        List<String> collect = null;
        if (field1s != null && field1s.size() >= 1
                && field1s.get(0).size() >= 2) {
            collect = field1s.stream().map(list -> list.get(0) + "-" + list.get(1))
                    .collect(Collectors.toList());

        }
        return DemoTableDTO.builder()
                .field1s(collect)
                .field2(vo.getField2())
                .field3(vo.getField3())
                .field4(vo.getField4())
                .build();
    }
}
